# 第三届vivo蓝河操作系统创新赛 - C转Rust转译工具评测镜像
# 基于Ubuntu 24.04，包含Rust工具链和必要的依赖

FROM ubuntu:22.04

LABEL maintainer="C2Rust Translation Tool Team"
LABEL description="Docker image for C to Rust translation tool evaluation"

# 设置非交互式安装
ENV DEBIAN_FRONTEND=noninteractive
ENV RUST_VERSION=1.83.0
ENV PATH="/root/.cargo/bin:${PATH}"

# 更新系统并安装基础依赖
RUN apt-get update && apt-get install -y \
    curl \
    build-essential \
    pkg-config \
    libssl-dev \
    ca-certificates \
    git \
    && rm -rf /var/lib/apt/lists/*

# 安装Rust工具链
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain ${RUST_VERSION} \
    && . $HOME/.cargo/env \
    && rustup component add rustfmt clippy

# 验证安装
RUN rustc --version && cargo --version

# 创建工作目录
WORKDIR /app

# 复制项目文件
COPY Cargo.toml Cargo.lock* ./
COPY src ./src
COPY llm_config.toml ./llm_config.toml

# 复制待转译的C项目
COPY translate_chibicc ./translate_chibicc
COPY translate_littlefs_fuse ./translate_littlefs_fuse

# 构建转译工具
RUN cargo build --release

# 创建输出目录
RUN mkdir -p /output

# 设置环境变量
ENV RUST_LOG=info
ENV C2RUST_CONFIG=/app/llm_config.toml

# 默认工作目录设置为 /tmp（与评测配置一致）
WORKDIR /tmp

# 确保构建的可执行文件可访问
RUN ln -s /app/target/release/c2rust /usr/local/bin/c2rust

# 健康检查
HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \
    CMD c2rust --version || exit 1

# 默认命令
CMD ["/bin/bash"]
